/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "core/components_ng/base/frame_node.h"
#include "core/interfaces/native/utility/converter.h"
#include "arkoala_api_generated.h"

namespace OHOS::Ace::NG::GeneratedModifier {
namespace RouterExtenderAccessor {
void Push0Impl(Ark_VMContext vmContext,
               Ark_AsyncWorkerPtr asyncWorker,
               Ark_NativePointer jsView,
               const Ark_PageRouterOptions* options,
               const Opt_RouterFinishCallback* finishCallback,
               const Callback_Opt_Array_String_Void* outputArgumentForReturningPromise)
{
}
void Push1Impl(Ark_NativePointer jsView,
               const Ark_PageRouterOptions* options,
               const Opt_RouterFinishCallback* finishCallback,
               const Opt_AsyncCallback_Void* callback_)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(jsView);
    //auto convValue = Converter::OptConvert<type>(jsView); // for enums
    // undefinedModelNG::SetPush1(frameNode, convValue);
}
void Replace0Impl(Ark_VMContext vmContext,
                  Ark_AsyncWorkerPtr asyncWorker,
                  Ark_NativePointer jsView,
                  const Ark_PageRouterOptions* options,
                  const Opt_RouterFinishCallback* enterFinishCallback,
                  const Callback_Opt_Array_String_Void* outputArgumentForReturningPromise)
{
}
void Replace1Impl(Ark_NativePointer jsView,
                  const Ark_PageRouterOptions* options,
                  const Opt_RouterFinishCallback* finishCallback,
                  const Opt_AsyncCallback_Void* callback_)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(jsView);
    //auto convValue = Converter::OptConvert<type>(jsView); // for enums
    // undefinedModelNG::SetReplace1(frameNode, convValue);
}
void Back0Impl(const Opt_router_RouterOptions* options)
{
}
void Back1Impl(Ark_Int32 index,
               const Opt_Object* params)
{
}
void RunPageImpl(Ark_NativePointer jsView,
                 const Ark_PageRouterOptions* options,
                 const Opt_RouterFinishCallback* finishCallback)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(jsView);
    //auto convValue = Converter::OptConvert<type>(jsView); // for enums
    // undefinedModelNG::SetRunPage(frameNode, convValue);
}
void ClearImpl()
{
}
void ShowAlertBeforeBackPageImpl(const Ark_String* message)
{
}
void HideAlertBeforeBackPageImpl()
{
}
Ark_String GetLengthImpl()
{
    return {};
}
Ark_router_RouterState GetStateImpl()
{
    return {};
}
Opt_router_RouterState GetStateByIndexImpl(Ark_Int32 index)
{
    return {};
}
Array_router_RouterState GetStateByUrlImpl(const Ark_String* url)
{
    return {};
}
Ark_Object GetParamsImpl()
{
    return {};
}
void PushNamedRoute0Impl(Ark_VMContext vmContext,
                         Ark_AsyncWorkerPtr asyncWorker,
                         Ark_NativePointer jsView,
                         const Ark_PageRouterOptions* options,
                         const Opt_RouterFinishCallback* finishCallback,
                         const Callback_Opt_Array_String_Void* outputArgumentForReturningPromise)
{
}
void PushNamedRoute1Impl(Ark_NativePointer jsView,
                         const Ark_PageRouterOptions* options,
                         const Opt_RouterFinishCallback* finishCallback,
                         const Opt_AsyncCallback_Void* callback_)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(jsView);
    //auto convValue = Converter::OptConvert<type>(jsView); // for enums
    // undefinedModelNG::SetPushNamedRoute1(frameNode, convValue);
}
void ReplaceNamedRoute0Impl(Ark_VMContext vmContext,
                            Ark_AsyncWorkerPtr asyncWorker,
                            Ark_NativePointer jsView,
                            const Ark_PageRouterOptions* options,
                            const Opt_RouterFinishCallback* enterFinishCallback,
                            const Callback_Opt_Array_String_Void* outputArgumentForReturningPromise)
{
}
void ReplaceNamedRoute1Impl(Ark_NativePointer jsView,
                            const Ark_PageRouterOptions* options,
                            const Opt_RouterFinishCallback* finishCallback,
                            const Opt_AsyncCallback_Void* callback_)
{
    auto frameNode = reinterpret_cast<FrameNode *>(node);
    CHECK_NULL_VOID(frameNode);
    //auto convValue = Converter::Convert<type>(jsView);
    //auto convValue = Converter::OptConvert<type>(jsView); // for enums
    // undefinedModelNG::SetReplaceNamedRoute1(frameNode, convValue);
}
} // RouterExtenderAccessor
const GENERATED_ArkUIRouterExtenderAccessor* GetRouterExtenderAccessor()
{
    static const GENERATED_ArkUIRouterExtenderAccessor RouterExtenderAccessorImpl {
        RouterExtenderAccessor::Push0Impl,
        RouterExtenderAccessor::Push1Impl,
        RouterExtenderAccessor::Replace0Impl,
        RouterExtenderAccessor::Replace1Impl,
        RouterExtenderAccessor::Back0Impl,
        RouterExtenderAccessor::Back1Impl,
        RouterExtenderAccessor::RunPageImpl,
        RouterExtenderAccessor::ClearImpl,
        RouterExtenderAccessor::ShowAlertBeforeBackPageImpl,
        RouterExtenderAccessor::HideAlertBeforeBackPageImpl,
        RouterExtenderAccessor::GetLengthImpl,
        RouterExtenderAccessor::GetStateImpl,
        RouterExtenderAccessor::GetStateByIndexImpl,
        RouterExtenderAccessor::GetStateByUrlImpl,
        RouterExtenderAccessor::GetParamsImpl,
        RouterExtenderAccessor::PushNamedRoute0Impl,
        RouterExtenderAccessor::PushNamedRoute1Impl,
        RouterExtenderAccessor::ReplaceNamedRoute0Impl,
        RouterExtenderAccessor::ReplaceNamedRoute1Impl,
    };
    return &RouterExtenderAccessorImpl;
}

}
